Cookies Management এবং Session Handling

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client)
179
179

অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client)Cookies Management এবং Session Handling গুরুত্বপূর্ণ বিষয়, কারণ অনেক সময় ওয়েব অ্যাপ্লিকেশনগুলো কুকি ব্যবহার করে ব্যবহারকারীর সেশন ট্র্যাক করতে এবং পরবর্তী রিকুয়েস্টে সেশন তথ্য ব্যবহার করতে। কুকি ব্যবস্থাপনা অ্যাপাচি HTTP ক্লায়েন্টের মাধ্যমে প্রয়োগ করা যায়, যাতে আপনি কুকি সঞ্চয় করতে, পাঠাতে এবং সেশন পরিচালনা করতে পারেন।

কুকি ব্যবস্থাপনা এবং সেশন হ্যান্ডলিং:

  1. CookieStore: এটি কুকি সঞ্চয় করার জন্য ব্যবহৃত হয়। কুকি সঞ্চয় করার মাধ্যমে পরবর্তী রিকুয়েস্টে সেই কুকি পাঠানো হয়।
  2. CookieSpecs: এটি কুকি ব্যবস্থাপনা নিয়ন্ত্রণ করতে ব্যবহৃত হয়, যেমন কুকির জন্য নিরাপত্তা এবং অন্যান্য কনফিগারেশন।
  3. Session Handling: সেশন সম্পর্কিত কুকি (যেমন JSESSIONID) সাধারণত একটি প্রমাণীকরণ সেশন পরিচালনা করতে ব্যবহৃত হয়।

উদাহরণ: Cookies Management এবং Session Handling

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.CookieStore;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.util.EntityUtils;
import org.apache.http.impl.cookie.BasicClientCookie;

public class CookieManagementExample {
    public static void main(String[] args) {
        // CookieStore তৈরি করা
        CookieStore cookieStore = new BasicCookieStore();

        // CookieStore এ কুকি যোগ করা
        BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "1234567890");
        cookie.setDomain("example.com");
        cookie.setPath("/");
        cookieStore.addCookie(cookie);

        // RequestConfig কনফিগারেশন তৈরি করা
        RequestConfig requestConfig = RequestConfig.custom()
                .setCookieSpec("standard") // কুকি স্পেসিফিকেশন নির্ধারণ
                .build();

        // HttpClient কনফিগারেশন তৈরি করা (কুকি স্টোর সহ)
        CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore)  // কুকি স্টোর সেট করা
                .setDefaultRequestConfig(requestConfig) // কুকি স্পেসিফিকেশন সহ
                .build();

        try {
            // HTTP GET রিকুয়েস্ট তৈরি করা
            HttpGet request = new HttpGet("http://example.com");

            // রিকুয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ
            HttpResponse response = httpClient.execute(request);

            // রেসপন্স স্ট্যাটাস কোড পরীক্ষা
            int statusCode = response.getStatusLine().getStatusCode();
            System.out.println("Response Status Code: " + statusCode);

            // রেসপন্স কন্টেন্ট গ্রহণ করা
            String responseContent = EntityUtils.toString(response.getEntity());
            System.out.println("Response Content: " + responseContent);

            // কুকি গুলি দেখানো
            System.out.println("Cookies stored: ");
            cookieStore.getCookies().forEach(c -> System.out.println(c.getName() + "=" + c.getValue()));

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // HttpClient বন্ধ করা
                httpClient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

উদাহরণের ব্যাখ্যা:

  1. BasicCookieStore: এটি একটি কুকি স্টোর তৈরি করে, যেখানে আপনি কুকি সঞ্চয় করতে পারেন। এখানে একটি JSESSIONID কুকি উদাহরণ হিসেবে যোগ করা হয়েছে।
  2. BasicClientCookie: এটি একটি কুকি তৈরি করার জন্য ব্যবহৃত হয়। কুকির জন্য নাম, মান, ডোমেন এবং পাথ নির্ধারণ করা হয়।
  3. RequestConfig.setCookieSpec("standard"): এটি কুকি স্পেসিফিকেশন নির্ধারণ করে, যার মাধ্যমে কুকি ব্যবস্থাপনার নিয়ম কনফিগার করা হয়।
  4. httpClient.execute(request): এটি HTTP GET রিকুয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়। রিকুয়েস্ট পাঠানোর সময় কুকি সঞ্চয় করা হয় এবং পরবর্তী রিকুয়েস্টে সেগুলো স্বয়ংক্রিয়ভাবে পাঠানো হয়।
  5. কুকি প্রদর্শন: কুকি স্টোরের মধ্যে সঞ্চিত কুকি গুলি দেখানো হয়েছে।

অতিরিক্ত কনফিগারেশন:

  • CookieSpecs: আপনি কুকি ব্যবস্থাপনার জন্য বিভিন্ন কুকি স্পেসিফিকেশন ব্যবহার করতে পারেন। যেমন:
    • CookieSpecs.STANDARD: সাধারণ কুকি ব্যবস্থাপনা।
    • CookieSpecs.IGNORE_COOKIES: কুকি উপেক্ষা করা।
    • CookieSpecs.BEST_MATCH: একটি কুকি স্পেসিফিকেশন যা সেরা ম্যাচের উপর ভিত্তি করে কাজ করে।
  • Session Handling: JSESSIONID বা অন্যান্য সেশন কুকি সাধারণত সেশন ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। যদি আপনার প্রোজেক্টে সেশন ট্র্যাক করতে হয়, তবে কুকি স্টোর ব্যবহার করে সেশন তথ্য প্রেরণ এবং গ্রহণ করতে পারবেন।
  • Persistent Cookies: যদি আপনি কুকি সংরক্ষণ করতে চান যা ক্লায়েন্টের জীবনকাল (session lifetime) ছাড়িয়ে চলে, তবে CookieStore এর মাধ্যমে সেগুলো ডিরেক্টরি বা ফাইল সিস্টেমে সংরক্ষণ করতে পারেন।

সারাংশ:

Cookies Management এবং Session Handling অ্যাপাচি HTTP ক্লায়েন্টে খুবই গুরুত্বপূর্ণ, কারণ এগুলি রিকুয়েস্টের মধ্যে কুকি পাঠানোর মাধ্যমে সেশন এবং স্টেট ট্র্যাক করতে সাহায্য করে। কুকি সঞ্চয় এবং কুকি স্পেসিফিকেশন কনফিগার করার মাধ্যমে আপনি কুকি ব্যবস্থাপনা নিয়ন্ত্রণ করতে পারবেন এবং প্রয়োজনীয় সেশন তথ্য প্রেরণ করতে পারবেন।

common.content_added_by

Cookies এর ধারণা এবং HTTP Client এ এর ব্যবহার

133
133

অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client)-এ Cookies একটি গুরুত্বপূর্ণ ধারণা, যা সার্ভারের পক্ষ থেকে ক্লায়েন্টে কিছু ডেটা সংরক্ষণ এবং পরবর্তী অনুরোধের সাথে পাঠানোর জন্য ব্যবহৃত হয়। Cookies সাধারণত ব্যবহারকারীর সেশন এবং অন্যান্য শর্তাবলী ট্র্যাক করতে ব্যবহৃত হয়।

Cookies এর ধারণা:

Cookies হল ছোট ডেটা ফাইল যা একটি ওয়েব সার্ভার ক্লায়েন্ট (ব্রাউজার বা HTTP ক্লায়েন্ট) এ পাঠায়। এই cookies পরবর্তী অনুরোধগুলিতে পুনরায় সার্ভারে পাঠানো হয়। সার্ভার এই তথ্য ব্যবহার করে ব্যবহারকারীর অবস্থান, সেশন ডেটা, প্রিফারেন্স ইত্যাদি ট্র্যাক করতে পারে। Cookies ব্যবহারকারীর পছন্দ অনুযায়ী কনফিগার করা যায় (যেমন, সেশন-কুকি, পার্মানেন্ট কুকি ইত্যাদি)।

HTTP ক্লায়েন্টে cookies ব্যবহারের মাধ্যমে আপনি সার্ভারের সাথে সেশন বজায় রাখতে, ব্যবহারকারীর প্রোফাইল তথ্য সংরক্ষণ করতে এবং বিভিন্ন ধরনের প্রিফারেন্স ট্র্যাক করতে পারেন।

HTTP ক্লায়েন্টে Cookies ব্যবহারের জন্য:

অ্যাপাচি HTTP ক্লায়েন্টে Cookies ব্যবহারের জন্য CookieStore, CookieSpec, এবং CookieManager এর মত কনফিগারেশন ব্যবহার করা হয়। এই কনফিগারেশনগুলির মাধ্যমে ক্লায়েন্টে cookies সংরক্ষণ, পাঠানো এবং পরিচালনা করা যায়।

1. CookieStore ব্যবহার করা:

CookieStore ব্যবহার করে আমরা cookies সংরক্ষণ করতে পারি। এটি HTTP ক্লায়েন্টের জন্য কুকি সংরক্ষণাগারের মতো কাজ করে।

CookieStore উদাহরণ:

import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.cookie.BasicCookieStore;
import org.apache.hc.client5.http.impl.cookie.CookieStore;
import org.apache.hc.core5.util.TimeValue;

public class ApacheHttpClientCookiesExample {
    public static void main(String[] args) throws Exception {
        // CookieStore তৈরি করা (কুকি সংরক্ষণের জন্য)
        CookieStore cookieStore = new BasicCookieStore();

        // HTTP ক্লায়েন্ট তৈরি করা, যাতে CookieStore সেট করা হয়
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore)  // CookieStore যোগ করা
                .build()) {

            // GET অনুরোধ তৈরি করা
            HttpGet request = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো এবং প্রতিক্রিয়া গ্রহণ করা
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                // কুকি পরিদর্শন
                cookieStore.getCookies().forEach(cookie -> 
                    System.out.println("Cookie: " + cookie.getName() + " = " + cookie.getValue())
                );

                System.out.println("HTTP Response Status Code: " + response.getCode());
                System.out.println("Response: " + response.getEntity());
            }
        }
    }
}

ব্যাখ্যা:

  • BasicCookieStore: এটি কুকি সংরক্ষণের জন্য একটি সাধারণ বাস্তবায়ন।
  • setDefaultCookieStore(cookieStore): HTTP ক্লায়েন্টে কুকি সংরক্ষণের জন্য CookieStore সেট করা হয়।
  • প্রতিক্রিয়া গ্রহণের পর, কুকি সংরক্ষিত থাকে এবং পরবর্তী অনুরোধে ব্যবহার করা যায়।

2. Cookies পাঠানো:

একবার কুকি সংরক্ষিত হলে, পরবর্তী HTTP অনুরোধে এই কুকিগুলি স্বয়ংক্রিয়ভাবে পাঠানো হয়। এটি CookieStore দ্বারা পরিচালিত হয়, এবং সার্ভারের সাথে সংযোগ স্থাপন করার সময় কুকিগুলি পাঠানো হয়।

Cookies পাঠানোর উদাহরণ:

import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.cookie.BasicCookieStore;
import org.apache.hc.client5.http.impl.cookie.CookieStore;

public class ApacheHttpClientSendCookiesExample {
    public static void main(String[] args) throws Exception {
        // CookieStore তৈরি করা
        CookieStore cookieStore = new BasicCookieStore();

        // HTTP ক্লায়েন্ট তৈরি করা, যাতে CookieStore সেট করা হয়
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore)  // CookieStore যোগ করা
                .build()) {

            // GET অনুরোধ তৈরি করা
            HttpGet request = new HttpGet("https://example.com");

            // প্রথম অনুরোধ পাঠানো এবং কুকি সংরক্ষণ
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println("HTTP Response Status Code: " + response.getCode());
                System.out.println("Response: " + response.getEntity());
            }

            // দ্বিতীয় GET অনুরোধ যেখানে কুকি স্বয়ংক্রিয়ভাবে পাঠানো হবে
            HttpGet request2 = new HttpGet("https://example.com/another");
            try (CloseableHttpResponse response2 = httpClient.execute(request2)) {
                System.out.println("HTTP Response Status Code (second request): " + response2.getCode());
            }
        }
    }
}

3. CookieSpec কনফিগারেশন:

CookieSpec ক্লায়েন্টে কুকি ব্যবস্থাপনা কাস্টমাইজ করতে ব্যবহৃত হয়। এটি বিশেষত গুরুত্বপূর্ণ যখন আপনি কুকি স্পেসিফিকেশন যেমন RFC 6265 অনুসরণ করতে চান বা কুকি পরিচালনার জন্য কাস্টম নিয়ম তৈরি করতে চান।

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.cookie.CookieSpecFactory;
import org.apache.hc.client5.http.impl.cookie.DefaultCookieSpecFactory;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;

public class CustomCookieSpecExample {
    public static void main(String[] args) {
        CookieSpecFactory cookieSpecFactory = new DefaultCookieSpecFactory();
        
        // কাস্টম CookieSpec ব্যবহার করা
        CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieSpecRegistry(cookieSpecFactory)
                .build();
    }
}

সারাংশ:

অ্যাপাচি HTTP ক্লায়েন্টে Cookies ব্যবহার করার মাধ্যমে, আপনি সার্ভারের সাথে সেশন বজায় রাখতে, ব্যবহারকারীর পছন্দ এবং প্রিফারেন্স ট্র্যাক করতে পারেন। CookieStore এবং CookieSpec ব্যবহার করে আপনি কুকি সংরক্ষণ, পাঠানো এবং কাস্টমাইজ করতে পারেন। কুকি সংরক্ষণের জন্য সাধারণত BasicCookieStore ব্যবহৃত হয় এবং কুকি গুলি স্বয়ংক্রিয়ভাবে পরবর্তী অনুরোধে পাঠানো হয়। এই ব্যবস্থাপনার মাধ্যমে, আপনার অ্যাপ্লিকেশন আরও ব্যক্তিগত এবং নিরাপদ হতে পারে।

common.content_added_by

CookieStore এর মাধ্যমে Cookies ম্যানেজ করা

175
175

CookieStore ব্যবহার করে Apache HTTP Client-এ Cookies ম্যানেজ করার জন্য আপনাকে HttpClient-এ Cookie handling কনফিগার করতে হবে। CookieStore একটি ইনটারফেস যা HTTP ক্লায়েন্টের মধ্যে কুকি সঞ্চয় এবং পুনরুদ্ধারের জন্য ব্যবহৃত হয়। এটি ক্লায়েন্টের কুকি সংগ্রহ সঞ্চয় করে, যাতে সার্ভার থেকে প্রাপ্ত কুকি-গুলি পরবর্তী রিকোয়েস্টে ব্যবহার করা যায়।

Maven Dependency:

প্রথমে, যদি আপনার প্রোজেক্টে Maven ব্যবহৃত হয়, তবে আপনাকে Apache HTTP Client-এর জন্য প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করতে হবে।

<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.4</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents.core5</groupId>
    <artifactId>httpcore5</artifactId>
    <version>5.4</version>
</dependency>

CookieStore ব্যবহার করে কুকি ম্যানেজমেন্ট:

Apache HTTP Client-এ CookieStore ব্যবহার করে কুকি ম্যানেজমেন্টের জন্য আপনাকে CookieStore সেট করতে হবে এবং HttpClient কনফিগারেশনের মধ্যে এটি সংযুক্ত করতে হবে। এটি কুকি সংগ্রহ করার জন্য এবং রিকোয়েস্টে কুকি পাঠানোর জন্য ব্যবহৃত হয়।

উদাহরণ: CookieStore দিয়ে কুকি ম্যানেজমেন্ট

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.http.impl.client.CookieStore;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.RequestConfig;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

public class HttpClientWithCookieStore {
    public static void main(String[] args) {
        // CookieStore তৈরি করা
        CookieStore cookieStore = new BasicCookieStore();

        // HTTP ক্লায়েন্ট কনফিগারেশন তৈরি, CookieStore যোগ করা
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultCookieStore(cookieStore)  // CookieStore সেট করা
                .build()) {

            // HTTP GET রিকোয়েস্ট তৈরি
            HttpGet request = new HttpGet("https://your-api-endpoint.com");

            // রিকোয়েস্ট পাঠানো এবং রেসপন্স প্রাপ্তি
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                String responseBody = EntityUtils.toString(response.getEntity());
                System.out.println("Response: " + responseBody);

                // কুকি গুলি প্রদর্শন করা
                cookieStore.getCookies().forEach(cookie -> System.out.println("Cookie: " + cookie.getName() + "=" + cookie.getValue()));
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  1. CookieStore: কুকি সংরক্ষণের জন্য BasicCookieStore ব্যবহার করা হয়েছে। এটি কুকি সঞ্চয় করতে এবং পরবর্তী রিকোয়েস্টে পাঠাতে সক্ষম।
  2. HttpClients.custom(): HttpClients.custom() ব্যবহার করে কাস্টম কনফিগারেশন সহ CloseableHttpClient তৈরি করা হয়েছে। এখানে setDefaultCookieStore(cookieStore) মেথড ব্যবহার করে কুকি স্টোর সেট করা হয়েছে।
  3. HttpGet: একটি HttpGet রিকোয়েস্ট তৈরি করা হয়েছে এবং httpClient.execute(request) মেথড দ্বারা সার্ভারে পাঠানো হয়েছে।
  4. Cookies Access: রেসপন্স পাওয়ার পর, cookieStore.getCookies() ব্যবহার করে কুকি গুলি অ্যাক্সেস করা হয় এবং কনসোলে প্রিন্ট করা হয়।

CookieStore এর অন্যান্য ফিচার:

  • Cookies Retrieving: cookieStore.getCookies() মেথডের মাধ্যমে কুকি গুলি পুনরুদ্ধার করা যায়।
  • Cookies Deletion: cookieStore.clear() ব্যবহার করে সমস্ত কুকি মুছে ফেলা যায়।

সারাংশ:

Apache HTTP Client-এ CookieStore ব্যবহার করে কুকি ম্যানেজমেন্ট করা যায়। BasicCookieStore কুকি সংগ্রহ করার জন্য এবং HttpClient কনফিগারেশনে setDefaultCookieStore ব্যবহার করে কুকি পাঠানোর জন্য ব্যবহৃত হয়। getCookies() মেথড ব্যবহার করে আপনি কুকি সংগ্রহ করতে পারেন এবং রেসপন্সের পর এগুলি অ্যাক্সেস করতে পারেন।

common.content_added_by

Persistent এবং Non-persistent Cookies

166
166

Persistent এবং Non-persistent Cookies: ধারণা এবং ব্যবহার

Cookies হল ছোট তথ্যের টুকরা যা সার্ভার থেকে ক্লায়েন্টে পাঠানো হয় এবং ক্লায়েন্ট (ব্রাউজার) বা সার্ভারে সংরক্ষণ করা হয়। HTTP প্রোটোকলের মধ্যে, Cookies প্রায়ই ব্যবহৃত হয় সেশন ডেটা ট্র্যাক করার জন্য, ইউজারের পার্সোনালাইজড অভিজ্ঞতা প্রদান করার জন্য, এবং সার্ভারের মধ্যে যোগাযোগের স্থিতি বজায় রাখার জন্য।

Persistent এবং Non-persistent Cookies দুটি প্রধান ধরনের কুকি রয়েছে:

  • Persistent Cookies: এই ধরনের কুকি একটি নির্দিষ্ট সময়সীমা (একটি ভবিষ্যত তারিখ) পর্যন্ত ব্রাউজারে সংরক্ষণ করা হয়। সময়সীমা শেষে, কুকিটি স্বয়ংক্রিয়ভাবে মুছে যায়।
  • Non-persistent Cookies: এই ধরনের কুকি শুধুমাত্র সেশন (যতক্ষণ না ব্রাউজার বন্ধ করা হয়) চলাকালীন থাকে। ব্রাউজার বন্ধ করার সাথে সাথে কুকি মুছে যায়।

Persistent এবং Non-persistent Cookies এর মধ্যে পার্থক্য

বৈশিষ্ট্যPersistent CookiesNon-persistent Cookies
সংরক্ষণের সময়কালনির্দিষ্ট সময়সীমা থাকে, যেমন এক সপ্তাহ, এক মাস, ইত্যাদিশুধুমাত্র সেশনের জন্য, ব্রাউজার বন্ধ হলে মুছে যায়
জীবনকালদীর্ঘ (সময় নির্ধারণ করা থাকে)স্বল্প (ব্রাউজার বন্ধ হলে মুছে যায়)
ব্যবহারইউজারের পরিচিতি এবং প্রেফারেন্স ট্র্যাক করাসেশনের তথ্য যেমন লগইন স্টেটাস ট্র্যাক করা
উদাহরণলগইন তথ্য সংরক্ষণ, ব্যবহারের জন্য পছন্দগুলিসেশনের মধ্যে চলমান তথ্য (যেমন, কার্টে আইটেম রাখার জন্য)

Apache HTTP Client এ Persistent এবং Non-persistent Cookies ব্যবহার

Apache HTTP Client-এ কুকি ব্যবস্থাপনা করতে CookieStore এবং HttpClientContext ব্যবহার করা হয়। এখানে, আমরা Persistent এবং Non-persistent কুকি ব্যবস্থাপনার জন্য কোড উদাহরণ দেখব।

1. Non-persistent Cookies ব্যবহারের উদাহরণ

Non-persistent Cookies সেশনের মধ্যে সংরক্ষণ করা হয়, এবং ব্রাউজার বন্ধ করার পর মুছে যায়।

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.cookie.CookieSpecBase;
import org.apache.http.impl.client.HttpClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.cookie.CookieSpec;

import java.util.List;

public class NonPersistentCookiesExample {
    public static void main(String[] args) {
        try {
            // CookieStore তৈরি করা
            BasicCookieStore cookieStore = new BasicCookieStore();

            // Non-persistent Cookie তৈরি করা (ব্রাউজার বন্ধ হলে মুছে যাবে)
            BasicClientCookie cookie = new BasicClientCookie("session_id", "123456");
            cookie.setDomain("example.com");
            cookie.setPath("/");
            cookie.setExpiryDate(null); // কোন Expiry Date সেট করা হবে না, সেজন্য এটি Non-persistent
            cookieStore.addCookie(cookie);

            // HttpClient তৈরি করা
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setDefaultCookieStore(cookieStore)
                    .build();

            // GET অনুরোধ তৈরি করা
            HttpGet httpGet = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো
            HttpClientContext context = HttpClientContext.create();
            context.setCookieStore(cookieStore);
            httpClient.execute(httpGet, context);

            // কুকি দেখানো
            List<Cookie> cookies = cookieStore.getCookies();
            for (Cookie c : cookies) {
                System.out.println("Cookie: " + c.getName() + " = " + c.getValue());
            }

            // ক্লোজ করা
            httpClient.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. Persistent Cookies ব্যবহারের উদাহরণ

Persistent Cookies-এর ক্ষেত্রে একটি নির্দিষ্ট expiry date সেট করা হয়, যার পর এটি মুছে যায় না।

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.client.HttpClientContext;
import org.apache.http.cookie.Cookie;
import java.util.Date;
import java.util.List;

public class PersistentCookiesExample {
    public static void main(String[] args) {
        try {
            // CookieStore তৈরি করা
            BasicCookieStore cookieStore = new BasicCookieStore();

            // Persistent Cookie তৈরি করা (একটি expiry date সহ)
            BasicClientCookie cookie = new BasicClientCookie("user_token", "abcdef123456");
            cookie.setDomain("example.com");
            cookie.setPath("/");
            // Expiry Date সেট করা
            Date expiryDate = new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000); // 1 দিন পর
            cookie.setExpiryDate(expiryDate);
            cookieStore.addCookie(cookie);

            // HttpClient তৈরি করা
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setDefaultCookieStore(cookieStore)
                    .build();

            // GET অনুরোধ তৈরি করা
            HttpGet httpGet = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো
            HttpClientContext context = HttpClientContext.create();
            context.setCookieStore(cookieStore);
            httpClient.execute(httpGet, context);

            // কুকি দেখানো
            List<Cookie> cookies = cookieStore.getCookies();
            for (Cookie c : cookies) {
                System.out.println("Cookie: " + c.getName() + " = " + c.getValue() + " Expiry Date: " + c.getExpiryDate());
            }

            // ক্লোজ করা
            httpClient.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোড ব্যাখ্যা

  1. Non-persistent Cookie
    • cookie.setExpiryDate(null) ব্যবহার করে non-persistent কুকি তৈরি করা হয়, যার ফলে এটি শুধুমাত্র সেশন চলাকালীন থাকে।
  2. Persistent Cookie
    • cookie.setExpiryDate(expiryDate) ব্যবহার করে persistent কুকি তৈরি করা হয়, যা একটি নির্দিষ্ট সময় পরে (যেমন 1 দিন পরে) মুছে যাবে।
  3. CookieStore
    • BasicCookieStore ব্যবহার করে কুকি সংরক্ষণ করা হয়, এবং সেটি HttpClient-এ সেট করা হয় যাতে কুকি পাঠানো যায় এবং সেগুলি ট্র্যাক করা যায়।
  4. HttpClientContext
    • HttpClientContext-এ CookieStore সংযুক্ত করা হয়, যাতে কুকি ব্যবস্থাপনা করা যায় এবং সার্ভারের কাছ থেকে রেসপন্সের কুকি সংগ্রহ করা যায়।

সারাংশ

Persistent এবং Non-persistent Cookies HTTP ক্লায়েন্টে ব্যবহারকারীর সেশন এবং প্রেফারেন্স ট্র্যাক করার জন্য ব্যবহৃত হয়। Non-persistent Cookies সেশনের জন্য সংরক্ষিত থাকে এবং ব্রাউজার বন্ধ হলে মুছে যায়, যখন Persistent Cookies একটি নির্দিষ্ট সময়ের জন্য ব্রাউজারে থাকে। Apache HTTP Client-এ কুকি ব্যবস্থাপনা সহজভাবে করা যায় এবং কাস্টম কুকি তৈরি, সেটিং, এবং সার্ভারের সাথে শেয়ার করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion